package main

import (
	"fmt"
	"reflect"
)

func main() {
	run1()
}

func run1() {
	// *int 的空指针
	var a *int
	fmt.Println("var a *int:", reflect.ValueOf(a).IsNil())
	// nil 值
	fmt.Println("nil:", reflect.ValueOf(nil).IsValid())
	// *int 类型的空指针
	fmt.Println("(*int)(nil):", reflect.ValueOf((*int)(nil)).Elem().IsValid())
	s := struct{}{}
	//实例化结构体中查找一个不存在的字段
	fmt.Println("不存在的结构体成员：", reflect.ValueOf(s).FieldByName("").IsValid())
	fmt.Println("不存在的结构体方法：", reflect.ValueOf(s).MethodByName("").IsValid())
	//实例化一个map
	m := map[int]int{}
	//尝试从map中查找一个不存在的键
	fmt.Println("不存在的键:", reflect.ValueOf(m).MapIndex(reflect.ValueOf(3)).IsValid())
}
